package com.xbongbong.pro.rabbitmq.feign;

import com.xbongbong.paas.toolbox.wrap.XbbResponse;
import com.xbongbong.pro.message.pojo.dto.MessageRabbitMqDTO;
import com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * 协同办公 内部调用接口(消息用)
 * @author 魏荣杰
 * @date 2019/2/25 15:23
 * @since v1.0
 * @version v1.0
 */
@FeignClient(name = "pro-web-pc",contextId ="cooperativeOfficeFeignClient")
public interface CooperativeOfficeFeignClient {
    //****************************************** 工作流 ******************************************************//
    /**
     * Description: 工作流新建 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:30
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workflow/add", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> workflowAdd(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工作流状态变更 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:30
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workflow/change", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> workflowChange(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工作流节点变更 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:30
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workflow/nodeChange", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> workflowNodeChange(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工作流通过 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:30
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workflow/pass", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> workflowPass(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 工作流拒绝 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:30
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workflow/refuse", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> workflowRefuse(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 编辑重新进工作流 消息接口
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:30
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workflow/reEdit", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> workflowReEdit(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
    /**
     * Description: 抄送人消息推送
     * @param messageRabbitMqDTO 消息推送  走消息队列，用于传输数据的
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.MessageRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/2/27 19:30
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/message/mq/workflow/toCc", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> workflowToCc(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);

    /**
     * 审批at人员
     * @param messageRabbitMqDTO
     * @return
     */
    @RequestMapping(value = "/pro/v1/message/mq/workflow/toAt", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> workflowToAt(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);

    /**
     * 审批评论编辑
     * @param messageRabbitMqDTO
     * @return
     */
    @RequestMapping(value = "/pro/v1/message/mq/workflow/commentEdit", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> workflowCommentEdit(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);

    /**
     * 审批评论删除
     * @param messageRabbitMqDTO
     * @return
     */
    @RequestMapping(value = "/pro/v1/message/mq/workflow/commentDel", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<MessageRabbitMqVO> workflowCommentDel(@RequestBody MessageRabbitMqDTO messageRabbitMqDTO);
}
